package br.com.cnpv.modelo.bo;

import java.util.List;

import org.hibernate.Session;

import br.com.cnpv.modelo.acesso.idao.ICidadeDAO;
import br.com.cnpv.modelo.dao.CidadeDAO;
import br.com.cnpv.modelo.entity.Cidade;
import br.com.cnpv.util.HibernateUtil;

public class CidadeBO extends HibernateUtil{
	
	public static CidadeBO INSTANCE;
	
	public static CidadeBO getInstance()
	{
		if(INSTANCE == null)
		{
			synchronized (CidadeBO.class) {
				INSTANCE = new CidadeBO();
			}
		}
		return INSTANCE;
	}

	public List<Cidade> listarCidades(int idEstado) throws Exception{
		Session session = null;
		List<Cidade> list = null;
		try
		{
			session = currentSession();
			ICidadeDAO dao = new CidadeDAO();
			list = dao.listarCidades(idEstado, session);
			
		}catch(Exception e)
		{
			throw new Exception(e);
		}finally
		{
			if(session != null)
			{
				session.flush();
				session.clear();
				closeSession();
			}
		}
		return list;
	}
	
	public Cidade getCidade(Integer idCidade) throws Exception{
		Session session = null;
		Cidade cidade = null;
		
		try
		{
			session = currentSession();
			ICidadeDAO dao = new CidadeDAO();
			
			cidade = dao.getCidade(idCidade, session);
			
		}catch(Exception e)
		{
			e.printStackTrace();
		}finally
		{
			if(session != null)
			{
				session.flush();
				session.clear();
			}
			closeSession();
		}
		return cidade;
	}

}
